package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Date;

import modelo.Deposito;
import modelo.Drogueria;
import modelo.Linea;
import modelo.Lote;
import modelo.Producto;
import modelo.ItemCompra;
//import modelo.Estante;
//import modelo.Paleta

import vista.VentanaReubicar;
import vista.VentanaAgregarProducto;
import vista.VentanaCompraProveedor;

public class ControladorVentanaReubicar implements ActionListener, ItemListener {

	private VentanaReubicar ventanaReubicar;
	private VentanaAgregarProducto ventanaAgregarProducto;
	private VentanaCompraProveedor ventanaCompraProveedor;
	private Deposito deposito;
	private Drogueria drogueria;
	private Producto producto;
	private ItemCompra itemCompra;
	private int posi;

	private Lote lote;


	public ControladorVentanaReubicar(Drogueria drog) {
		// TODO Auto-generated constructor stub
		super();
		ventanaReubicar  = new VentanaReubicar();
		ventanaReubicar.setLocationRelativeTo(null);
		ventanaReubicar.setVisible(true);
		ventanaReubicar.agregarListener(this);
		this.drogueria = drog;	
		ventanaReubicar.setDepositosComboBox(drogueria.getNombreDepositosComboBox());



	}


	/*****************************************************************************/
	/*Les damos accion a los botones*/
	public void actionPerformed(ActionEvent ae){
		if (ae.getActionCommand().equalsIgnoreCase("Reubicar")){
			
			//ventanaReubicar.habilitarUbicar();
			
		}
		if (ae.getActionCommand().equalsIgnoreCase("Ubicar")){
			reubicarLote();

			// ubicar();		
		}
		if (ae.getActionCommand().equalsIgnoreCase("Buscar")){
			buscarLotes();
		}
		if (ae.getActionCommand().equalsIgnoreCase("Cancelar Ubicacion")){
			//ventanaReubicar.limpiarCamposUbicar();	
		}
		if (ae.getActionCommand().equalsIgnoreCase("Finalizar")){
			//almacenar();
		}
		if (ae.getActionCommand().equalsIgnoreCase("Cancelar")){
			ventanaReubicar.limpiarCampos();
		}
		if (ae.getActionCommand().equalsIgnoreCase("Salir")){

			ventanaReubicar.dispose();
		}

	}
	/*********************************************************************************************/

	/*Se realiza la busqueda de los lotes*/
	public void buscarLotes(){

		String codigo = ventanaReubicar.getCodigoLote();
		if(!codigo.equals("")){ 
			int pos = itemCompra.buscarLote(codigo);
			if(pos!=-1){
				ventanaReubicar.setNombPro(itemCompra.getLote(pos).getDescripcion());
				ventanaReubicar.setCantLote(itemCompra.getLote(pos).getCantLote());
				ventanaReubicar.setDeposito(itemCompra.getLote(pos).getCodDeposito());
				ventanaReubicar.setContenedor(itemCompra.getLote(pos).getContenedor() + "" +itemCompra.getLote(pos).getNumContenedor());

				this.posi = pos;
				ventanaReubicar.inhabilitar();
			}
			else
				ventanaReubicar.mostrarMensaje("Este Codigo de lote no existe");
		}
		else{
			ventanaReubicar.mostrarMensaje("Por favor ingrese el codigo del lote ");
			
		}
	}		

	

	public void reubicarLote(){

		try {

			String deposito   = ventanaReubicar.getCmbDeposito();

			String figuraSeleccionada=ventanaReubicar.getOpcionSeleccionada();	
			// Si es la Opción Estante, se realiza la reubicacion a paleta
			if (figuraSeleccionada.equals("Paleta")) {
				String paleta = ventanaReubicar.getCmbNum();
				itemCompra.getLote(posi).setCodDeposito(deposito);
				itemCompra.getLote(posi).setNumContenedor(paleta);   
			}
			else{
				
				String estante= ventanaReubicar.getCmbNum();
				itemCompra.getLote(posi).setCodDeposito(deposito);
				itemCompra.getLote(posi).setNumContenedor(estante);

			}
			

		}
		catch(Exception e) {
			// Mensaje de Dialogo en caso de que ocurra cualquier otra excepcion
			ventanaReubicar.mostrarMensaje("Deben ser validos");
		}

		ventanaReubicar.setDepositosComboBox(itemCompra.getDepositoComboBox());


	}

	/*se llenan los combos cuando cambias el rad button*/
	public void itemStateChanged(ItemEvent ie) {

		//Necesario para poder llenar los campos , debido q get deposito retorna un String
		int cmb =  Integer.parseInt(ventanaReubicar.getCmbDeposito());
		deposito = drogueria.getDeposito(cmb-1);
		if(ie.getStateChange() == ItemEvent.SELECTED){
			if(ie.getSource() == ventanaReubicar.getRbtEstante()){
				ventanaReubicar.llenarComboEstante(deposito.cantEstantes());
			}else{
				ventanaReubicar.llenarComboPaleta(deposito.cantPaletas());
			}
		}
	}
	
	

}
